package com.qf.data.api;

import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qf.common.bean.Pages;
import com.qf.common.bean.R;
import com.qf.common.dto.DeviceCmdDto;
import com.qf.common.dto.DeviceModelValueDto;
import com.qf.common.model.DeviceCmd;
import com.qf.common.model.DeviceModelValue;
import com.qf.data.service.DeviceCmdService;
import com.qf.data.service.DeviceModelValueService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Calendar;

/**
 * 查询mongodb中设备指令日志数据
 * @author 千锋健哥
 */
@RestController
@RequestMapping("/data/deviceCmd")
public class DeviceCmdController {

    @Autowired
    private DeviceCmdService deviceCmdService;

    @PostMapping("/list")
    public R<Page<DeviceCmd>> list(@RequestBody DeviceCmdDto dto) {
        //判断参数不能为空
        if (dto == null) {
            return R.fail("查询条件不可以为空!");
        }
        if (StringUtils.isEmpty(dto.getProductKey())) {
            return R.fail("产品key不可以为空!");
        }

        if (StringUtils.isEmpty(dto.getDeviceKey())
                && StringUtils.isEmpty(dto.getTenantId())) {
            return R.fail("设备key和租户id不能同时为空!");
        }

        //判断分页条件如果为空, 初始化分页
        if (dto.getPage() == null) {
            dto.setPage(new Pages());
        }

        //如果查询时间为空则默认查询一个月内的数据
        if (dto.getPage().getStartTime() == 0 || dto.getPage().getEndTime() == 0) {
            //当前时间就是查询截止时间
            long endTime = System.currentTimeMillis();
            Calendar calBegin = Calendar.getInstance();
            calBegin.add(Calendar.DAY_OF_MONTH, -1);
            long startTime = calBegin.getTimeInMillis();
            dto.getPage().setStartTime(startTime);
            dto.getPage().setEndTime(endTime);
        }

        Page<DeviceCmd> result = deviceCmdService.list(dto);
        return R.ok(result);
    }
}
